
// 平台配置类型定义（与配置文件结构完全一致）
export interface PlatformConfig {
  loadExternalModules: boolean;  // 严格以配置文件值为准
}

/**
 * 平台配置读取工具（核心逻辑）
 * 特性：完全尊重配置文件中的值，仅在配置缺失时使用默认值
 * @returns 配置文件内容或默认配置
 */
export const getPlatformConfig = async (): Promise<PlatformConfig> => {
  try {
    // 1. 读取配置文件（public目录下的文件，打包后位于dist根目录）
    // 路径说明：./ 表示相对于dist/index.html的路径
    const response = await fetch('/load-modules-config.json');
    
    // 2. 处理网络错误（如配置文件不存在）
    if (!response.ok) {
      throw new Error(`配置文件请求失败，状态码: ${response.status}`);
    }
    
    // 3. 解析配置文件内容
    const config = await response.json() as PlatformConfig;
    
    // 4. 仅校验必要字段是否存在，不修正值（完全尊重配置文件）
    if (config.loadExternalModules === undefined) {
      throw new Error('配置文件缺少必要字段：loadExternalModules');
    }
    
    // 5. 配置合法，直接返回配置文件中的值（不做任何修改）
    console.log('成功读取配置文件，将严格按配置执行');
    return config;
    
  } catch (error) {
    // 6. 配置文件加载/解析失败时，使用默认配置（仅作为降级方案）
    console.error('配置文件异常，使用默认配置：', error);
    return {
      loadExternalModules: false,  // 默认加载内部插件
    };
  }
};
